#ifndef LEPTJSON_H__
#define LEPTJSON_H__

// json有6种数据类型：true和false将boolean类型一分二
typedef enum { LEPT_NULL, LEPT_FALSE, LEPT_TRUE, LEPT_NUMBER, LEPT_STRING, LEPT_ARRAY, LEPT_OBJECT } lept_type;

typedef struct {
    double n;  // 选用c的双精度double类型来存储json数字
    lept_type type;
}lept_value;

enum {
    LEPT_PARSE_OK = 0,  // 无错误
    LEPT_PARSE_EXPECT_VALUE,  // 一个JSON只含有空白
    LEPT_PARSE_INVALID_VALUE,  // 无效值
    // 一个值后，在空白之后还有其他字符
    LEPT_PARSE_ROOT_NOT_SINGULAR,
    LEPT_PARSE_NUMER_TOO_BIG
};

// API函数，解析Json
int lept_parse(lept_value* v, const char* json);

lept_type lept_get_type(const lept_value* v);

double lept_get_number(const lept_value* v);

#endif /* LEPTJSON_H__ */
